<?php


require_once 'SC/SCanimal.php';
require_once 'SC/SCremarque.php';
require_once 'SC/SCpersonne.php';



/**
 * Classe permettant de gérer les services fonctionnel manipulant des remarques 
 * @author Zikrija
 * @date 11.05.2012
 */
class SFremarque{


    /**
     * Service fonctionnel permettant d'ajouter une remarque
     * @param Remarque l'objet remarque à ajouter
     * @return Remarque l'objet remarque ajouté 
     */
    public function ajouter(Remarque $uneRemarqueAAjouter) {
        $uneRemarqueMemorise      = null;
        $SCanimal = new SCanimal();
        $SCremarque = new SCremarque();
        $SCpersonne = new SCpersonne();
        
        
        // Vérifie l'existance d'un animal
        $unAnimalValide = $SCanimal->lister(new Animal($uneRemarqueAAjouter->getAnimal_id(), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
        if($unAnimalValide['0']){
            // Vérifie l'existance d'une personne
            $unePersonneValide = $SCpersonne->lister(new Personne($uneRemarqueAAjouter->getPersonne_id()));
            if($unePersonneValide['0']){
                // Mémorise la remarque
                $uneRemarqueMemorise = $SCremarque->ajouter($uneRemarqueAAjouter);
            }
        }
        return $uneRemarqueMemorise;
    }

    /**
     * Service Fonctionnel permettant la modification d'une remarque
     * @param Remarque L'objet remarque à modifier
     * @return Remarque L'objet remarque modifié 
     */
    public function modifier(Remarque $uneRemaqueAModifier) {
        $uneRemarqueModifiee      = null;
        $SCanimal = new SCanimal();
        $SCremarque = new SCremarque();
        $SCpersonne = new SCpersonne();
        
        $uneRemarqueExistante = $SCremarque->lister(new Remarque($uneRemaqueAModifier->getId(), null, null, null, null, null));
        if($uneRemarqueExistante['0']){
            // Vérifie l'existance d'un animal
            $unAnimalValide = $SCanimal->lister(new Animal($uneRemarqueAAjouter->getAnimal_id(), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
            if($unAnimalValide['0']){
                // Vérifie l'existance d'une personne
                $unePersonneValide = $SCpersonne->lister(new Personne($uneRemarqueAAjouter->getPersonne_id()));
                if($unePersonneValide['0']){
                    // Modification de la remarque
                    $uneRemarqueModifiee = $SCremarque->modifier($uneRemarqueAModifier);
                }
            }
        }
        return $uneRemarqueModifiee;
    }

    /**
     * Supprime une remarque
     * @param int identifiant de la remarque à supprimer
     * @return Boolean True si la remarque a été supprimée, False sinon
     */
    public function supprimer($idRemarqueASupprimer) {
        $SCremarque = new SCremarque();
        $uneRemarqueSupprimee = null;
        // Vérifie l'existance de la remarque
        $uneRemarqueExistante = $SCremarque->lister(new Remarque($idRemarqueASupprimer, null, null, null, null, null));
        if($uneRemarqueExistante['0']){
            $uneRemarqueSupprimee = $SCremarque->supprimer($uneRemarqueExistante['0']->getId());
        }
        return $uneRemarqueSupprimee;
    }
    
    /**
     * Service Fonctionnel permettant de lister les remarque
     * @param Remarque Objet remarque contenant les critères de sélection
     * @return Remarque[] Une liste de remarques correspondant aux critères de selection 
     */
    public function lister(Remarque $remarqueARechercher) {
        $SCremarque = new SCremarque();
        return $listeRemarques = $SCremarque->lister($remarqueARechercher);
    }
}

?>
